﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Xml.Linq;
using MySql.Data.MySqlClient;
using MySql.Data.Types;
using System.Data.Sql;
using System.Data.SqlClient;

using System.Collections.Generic;


namespace GCon
{
    /// <summary>
    /// Clase contenedora de Alumno
    /// </summary>
    public class Con_Alumno : Int_Contenedor
    {
        /// <summary>
        /// Constructor por defecto
        /// </summary>
        public Con_Alumno()
        {
            
        }
        public override Object getObjeto()
        {
            return null;
        }

        /// <summary>
        /// Constructor con todos los parametros
        /// </summary>
        public Con_Alumno(String ID_PK, String NOMBRE, String APELLIDO1, String APELLIDO2, String NIF, String DIRECCION,
                          String CP, String MAIL, String OBSERVACIONES, String FECHA_CREACION, String TLF1, String TLF2, 
                          String CIUDAD_ID_PK, String PROVINCIA_ID_PK, String ESTADO_ALUMNO_ID_PK, String COMERCIAL_ID_PK,
                          String NACIONALIDAD_ID_PK, String NUM_MATRICULA, String ALTA_BOLSA_EMPLEO, String NUM_CUENTA,
                          String FECHA_NACIMIENTO, String NUM_HIJOS, String TRABAJO_ACTUAL, String HORARIO_TRABAJO,
                          String ESTUDIOS_REALIZADOS, String INGLES, String INFORMATICA, String OTROS_ESTUDIOS,
                          String OBSERVACIONES_DOCENCIA, String ESTADO_CIVIL_ID_PK, String TOMADOR_ID_PK)
        {
           this._ID_PK = ID_PK; this._NOMBRE = NOMBRE; this._APELLIDO1 = APELLIDO1; this._APELLIDO2 = APELLIDO2;
           this._NIF = NIF; this._DIRECCION = DIRECCION; this._CP = CP ; this._MAIL =  MAIL; this._OBSERVACIONES = OBSERVACIONES;
           this._FECHA_CREACION = FECHA_CREACION; this._TLF1 = TLF1; this._TLF2 = TLF2; this._CIUDAD_ID_PK = CIUDAD_ID_PK;
           this._PROVINCIA_ID_PK = PROVINCIA_ID_PK; this._ESTADO_ALUMNO_ID_PK = ESTADO_ALUMNO_ID_PK; this._COMERCIAL_ID_PK = COMERCIAL_ID_PK;
           this._NACIONALIDAD_ID_PK = NACIONALIDAD_ID_PK; this._NUM_CUENTA = NUM_CUENTA; this._NUM_MATRICULA = NUM_MATRICULA;
           this._ALTA_BOLSA_EMPLEO = ALTA_BOLSA_EMPLEO; this._FECHA_NACIMIENTO = FECHA_NACIMIENTO; this._NUM_HIJOS = NUM_HIJOS;
           this._TRABAJO_ACTUAL = TRABAJO_ACTUAL; this._HORARIO_TRABAJO = HORARIO_TRABAJO; this._ESTUDIOS_REALIZADOS = ESTUDIOS_REALIZADOS;
           this._INGLES = INGLES; this._INFORMATICA = INFORMATICA; this._OTROS_ESTUDIOS = OTROS_ESTUDIOS;
           this._OBSERVACIONES_DOCENCIA = OBSERVACIONES_DOCENCIA; this._ESTADO_CIVIL_ID_PK = ESTADO_CIVIL_ID_PK; this._TOMADOR_ID_PK = TOMADOR_ID_PK;
        }

        /// <summary>
        /// Constructor de copia
        /// </summary>
        /// <param name="otro"></param>
        public Con_Alumno(Con_Alumno otro)
        {
            this._ID_PK = otro._ID_PK;
            this._NOMBRE = otro._NOMBRE;
            this._APELLIDO1 = otro._APELLIDO1;
            this._APELLIDO2 = otro._APELLIDO2;
            this._NIF = otro._NIF;
            this._DIRECCION = otro._DIRECCION;
            this._CP = otro._CP;
            this._MAIL = otro._MAIL;
            this._OBSERVACIONES = otro._OBSERVACIONES;
            this._FECHA_CREACION = otro._FECHA_CREACION;
            this._TLF1 = otro._TLF1;
            this._TLF2 = otro._TLF2;
            this._CIUDAD_ID_PK = otro._CIUDAD_ID_PK;
            this._PROVINCIA_ID_PK = otro._PROVINCIA_ID_PK;
            this._ESTADO_ALUMNO_ID_PK = otro._ESTADO_ALUMNO_ID_PK;
            this._COMERCIAL_ID_PK = otro._COMERCIAL_ID_PK;
            this._NACIONALIDAD_ID_PK = otro._NACIONALIDAD_ID_PK;
            this._NUM_CUENTA = otro._NUM_CUENTA;
            this._NUM_MATRICULA = otro._NUM_MATRICULA;
            this._ALTA_BOLSA_EMPLEO = otro._ALTA_BOLSA_EMPLEO;
            this._FECHA_NACIMIENTO = otro._FECHA_NACIMIENTO;
            this._NUM_HIJOS = otro._NUM_HIJOS;
            this._TRABAJO_ACTUAL = otro._TRABAJO_ACTUAL;
            this._HORARIO_TRABAJO = otro._HORARIO_TRABAJO;
            this._ESTUDIOS_REALIZADOS = otro._ESTUDIOS_REALIZADOS;
            this._INGLES = otro._INGLES;
            this._INFORMATICA = otro._INFORMATICA;
            this._OTROS_ESTUDIOS = otro._OTROS_ESTUDIOS;
            this._OBSERVACIONES_DOCENCIA = otro._OBSERVACIONES_DOCENCIA;
            this._ESTADO_CIVIL_ID_PK = otro._ESTADO_CIVIL_ID_PK;
            this._TOMADOR_ID_PK = otro._TOMADOR_ID_PK;
        }

        /// <summary>
        /// Procedimiento de carga.
        /// Recupera de la BBDD el Alumno con Id = IdAlumno.
        /// </summary>
        /// <param name="IdAlumno"></param>
        public void CargaAlumno(int IdAlumno)
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL CargaAlumno ( '" + IdAlumno + "' );";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                this._ID_PK = dr["ALUMNO_ID_PK"].ToString();
                this._NOMBRE = dr["ALUMNO_NOMBRE"].ToString();
                this._APELLIDO1 = dr["ALUMNO_APELLIDO1"].ToString();
                this._APELLIDO2 = dr["ALUMNO_APELLIDO2"].ToString();
                this._NIF = dr["ALUMNO_NIF"].ToString();
                this._DIRECCION = dr["ALUMNO_DIRECCION"].ToString();
                this._CP = dr["ALUMNO_CP"].ToString();
                this._MAIL = dr["ALUMNO_MAIL"].ToString();
                this._OBSERVACIONES = dr["ALUMNO_OBSERVACIONES"].ToString();
                this._FECHA_CREACION = dr["ALUMNO_FECHA_CREACION"].ToString();
                this._TLF1 = dr["ALUMNO_TLF1"].ToString();
                this._TLF2 = dr["ALUMNO_TLF2"].ToString();
                this._CIUDAD_ID_PK = dr["CIUDAD_ID_PK"].ToString();
                this._PROVINCIA_ID_PK = dr["PROVINCIA_ID_PK"].ToString();
                this._ESTADO_ALUMNO_ID_PK = dr["ESTADO_ALUMNO_ID_PK"].ToString();
                this._COMERCIAL_ID_PK = dr["COMERCIAL_ID_PK"].ToString();
                this._NACIONALIDAD_ID_PK = dr["NACIONALIDAD_ID_PK"].ToString();
                this._NUM_CUENTA = dr["ALUMNO_NUM_CUENTA"].ToString();
                this._NUM_MATRICULA = dr["ALUMNO_NUM_MATRICULA"].ToString();
                this._ALTA_BOLSA_EMPLEO = dr["ALUMNO_ALTA_BOLSA_EMPLEO"].ToString();
                this._FECHA_NACIMIENTO = dr["ALUMNO_FECHA_NACIMIENTO"].ToString();
                this._NUM_HIJOS = dr["ALUMNO_NUM_HIJOS"].ToString();
                this._TRABAJO_ACTUAL = dr["ALUMNO_TRABAJO_ACTUAL"].ToString();
                this._HORARIO_TRABAJO = dr["ALUMNO_HORARIO_TRABAJO"].ToString();
                this._ESTUDIOS_REALIZADOS = dr["ALUMNO_ESTUDIOS_REALIZADOS"].ToString();
                this._INGLES = dr["ALUMNO_INGLES"].ToString();
                this._INFORMATICA = dr["ALUMNO_INFORMATICA"].ToString();
                this._OTROS_ESTUDIOS = dr["ALUMNO_OTROS_ESTUDIOS"].ToString();
                this._OBSERVACIONES_DOCENCIA = dr["ALUMNO_OBSERVACIONES_DOCENCIA"].ToString();
                this._ESTADO_CIVIL_ID_PK = dr["ESTADO_CIVIL_ID_PK"].ToString();
                this._TOMADOR_ID_PK = dr["TOMADOR_ID_PK"].ToString();

            }

            oConexion.Close();
        }

        /// <summary>
        /// Procedimiento de inserción.
        /// Inserta en la BBDD un Alumno.
        /// </summary>
        public void InsertaAlumno()
        {
            MySqlConnection oConexion;
            MySqlCommand oComando;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";

            llamada = "CALL InsertaAlumno ( '" + this._NOMBRE + "','" + this._APELLIDO1 + "','" + this._APELLIDO2 + "','"
                                            + this._NIF + "','" + this._DIRECCION + "','" + this._CP
                                            + "','" + this._MAIL + "','" + this._OBSERVACIONES + "','" + this._FECHA_CREACION
                                            + "','" + this._TLF1 + "','" + this._TLF2 + "','" + this._ESTADO_ALUMNO_ID_PK
                                            + "','" + this._COMERCIAL_ID_PK + "','" + this._CIUDAD_ID_PK + "','" + this._NACIONALIDAD_ID_PK
                                            + "','" + this._PROVINCIA_ID_PK + "','" + this._NUM_MATRICULA + "','" + this._ALTA_BOLSA_EMPLEO
                                            + "','" + this._NUM_CUENTA + "','" + this._FECHA_NACIMIENTO + "','" + this._NUM_HIJOS
                                            + "','" + this._TRABAJO_ACTUAL + "','" + this._HORARIO_TRABAJO + "','" + this._ESTUDIOS_REALIZADOS
                                            + "','" + this._INGLES + "','" + this._INFORMATICA + "','" + this._OTROS_ESTUDIOS
                                            + "','" + this._OBSERVACIONES_DOCENCIA + "','" + this._ESTADO_CIVIL_ID_PK + "','" + this._TOMADOR_ID_PK + "' );";
            oComando = new MySqlCommand(llamada, oConexion);

            oConexion.Open();
            oComando.ExecuteReader();

            oConexion.Close();
        }

        /// <summary>
        /// Procedimiento de modificación.
        /// Modifica en la BBDD un Alumno.
        /// </summary>
        public void ModificaAlumno()
        {
            MySqlConnection oConexion;
            MySqlCommand oComando;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";

            llamada = "CALL ModificaAlumno ( '" + this._ID_PK + "','" + this._NOMBRE + "','" + this._APELLIDO1 + "','" + this._APELLIDO2 + "','"
                                            + this._NIF + "','" + this._DIRECCION + "','" + this._CP
                                            + "','" + this._MAIL + "','" + this._OBSERVACIONES + "','" + this._FECHA_CREACION
                                            + "','" + this._TLF1 + "','" + this._TLF2 + "','" + this._ESTADO_ALUMNO_ID_PK
                                            + "','" + this._COMERCIAL_ID_PK + "','" + this._CIUDAD_ID_PK + "','" + this._NACIONALIDAD_ID_PK
                                            + "','" + this._PROVINCIA_ID_PK + "','" + this._NUM_MATRICULA + "','" + this._ALTA_BOLSA_EMPLEO
                                            + "','" + this._NUM_CUENTA + "','" + this._FECHA_NACIMIENTO + "','" + this._NUM_HIJOS
                                            + "','" + this._TRABAJO_ACTUAL + "','" + this._HORARIO_TRABAJO + "','" + this._ESTUDIOS_REALIZADOS
                                            + "','" + this._INGLES + "','" + this._INFORMATICA + "','" + this._OTROS_ESTUDIOS
                                            + "','" + this._OBSERVACIONES_DOCENCIA + "','" + this._ESTADO_CIVIL_ID_PK + "','" + this._TOMADOR_ID_PK + "' );";
            oComando = new MySqlCommand(llamada, oConexion);

            oConexion.Open();
            oComando.ExecuteReader();

            oConexion.Close();
        }

        /// <summary>
        /// Procedimiento de eliminación.
        /// Elimina de la BBDD un Alumno.
        /// </summary>
        public void EliminaAlumno()
        {
            MySqlConnection oConexion;
            MySqlCommand oComando;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";

            llamada = "CALL EliminaAlumno ( '" + this._ID_PK + "' );";
            oComando = new MySqlCommand(llamada, oConexion);

            oConexion.Open();
            oComando.ExecuteReader();

            oConexion.Close();
        }

        /// <summary>
        /// Procedimiento de alta en bolsa de empleo.
        /// Da de alta un Alumno en BE.
        /// </summary>
        public void AltaAlumnoBolsaEmpleo()
        {
            MySqlConnection oConexion;
            MySqlCommand oComando;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";

            llamada = "CALL AltaAlumnoBolsaEmpleo ( '" + this._ID_PK + "' );";
            oComando = new MySqlCommand(llamada, oConexion);

            oConexion.Open();
            oComando.ExecuteReader();

            oConexion.Close();
        }

        /// <summary>
        /// Procedimiento de baja en bolsa de empleo.
        /// Da de baja un Alumno en BE.
        /// </summary>
        public void BajaAlumnoBolsaEmpleo()
        {
            MySqlConnection oConexion;
            MySqlCommand oComando;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";

            llamada = "CALL BajaAlumnoBolsaEmpleo ( '" + this._ID_PK + "' );";
            oComando = new MySqlCommand(llamada, oConexion);

            oConexion.Open();
            oComando.ExecuteReader();

            oConexion.Close();
        }

        /// <summary>
        /// Procedimiento de alta en bolsa de practicas.
        /// Da de alta un Alumno en BP.
        /// </summary>
        public void AltaAlumnoPracticas(String idEmpresa, String inicio, String fin)
        {
            MySqlConnection oConexion;
            MySqlCommand oComando;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";

            llamada = "CALL AltaAlumnoPracticas ( '" + this._ID_PK + "','" + idEmpresa + "','" + inicio + "','" + fin + "' );";
            oComando = new MySqlCommand(llamada, oConexion);

            oConexion.Open();
            oComando.ExecuteReader();

            oConexion.Close();
        }

        /// <summary>
        /// Procedimiento de baja en bolsa de practicas.
        /// Da de baja un Alumno en BP.
        /// </summary>
        public void BajaAlumnoPracticas(String idEmpresa)
        {
            MySqlConnection oConexion;
            MySqlCommand oComando;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";

            llamada = "CALL BajaAlumnoPracticas ( '" + this._ID_PK + "','" + idEmpresa + "' );";
            oComando = new MySqlCommand(llamada, oConexion);

            oConexion.Open();
            oComando.ExecuteReader();

            oConexion.Close();
        }

        public void BoletinNotasParaCurso(String idCurso)
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Asignatura oAsignatura;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL BoletinNotasParaCurso(" + this._ID_PK + "," + idCurso + ")";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {

                oAsignatura = new Con_Asignatura();
                oAsignatura.Set_ID_PK(dr["ASIGNATURA_ID_PK"].ToString());
                oAsignatura.Set_NOMBRE(dr["ASIGNATURA_NOMBRE"].ToString());
                oAsignatura.Set_NOTA(dr["ASIGNATURA_NOTA"].ToString());
                _dAsignaturas.Add(oAsignatura.Get_ID_PK(), oAsignatura);
                oAsignatura = null;

            }

            oConexion.Close();
        }

        public void BoletinNotasSinCurso()
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Asignatura oAsignatura;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();
            
            llamada = "CALL BoletinNotasSinCurso(" + this._ID_PK + ")";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {

                oAsignatura = new Con_Asignatura();
                oAsignatura.Set_ID_PK(dr["ASIGNATURA_ID_PK"].ToString());
                oAsignatura.Set_NOMBRE(dr["ASIGNATURA_NOMBRE"].ToString());
                oAsignatura.Set_NOTA(dr["ASIGNATURA_NOTA"].ToString());
                _dAsignaturas.Add(oAsignatura.Get_ID_PK(), oAsignatura);
                oAsignatura = null;

            }

            oConexion.Close();
        }

        /// <summary>
        /// Procedimiento de MATRICULACION.
        /// matricula a un alumno en un curso
        /// </summary>
        public void MatriculaEnCurso(String idCurso, String idFormaPago)
        {
            MySqlConnection oConexion;
            MySqlCommand oComando;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";

            llamada = "CALL MatriculaEnCurso ( '" + this._ID_PK + "','" + idCurso +"','"  + idFormaPago + "' );";
            oComando = new MySqlCommand(llamada, oConexion);

            oConexion.Open();
            oComando.ExecuteReader();

            oConexion.Close();
        }

        /// <summary>
        /// Procedimiento de MATRICULACION.
        /// matricula a un alumno en una Asignatura suelta
        /// </summary>
        public void MatriculaEnAsignatura(String idAsignatura, String idFormaPago)
        {
            MySqlConnection oConexion;
            MySqlCommand oComando;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";

            llamada = "CALL MatriculaEnAsignatura ( '" + this._ID_PK + "','" + idAsignatura + "','" + idFormaPago + "' );";
            oComando = new MySqlCommand(llamada, oConexion);

            oConexion.Open();
            oComando.ExecuteReader();

            oConexion.Close();
        }

        /// <summary>
        /// Procedimiento de MATRICULACION.
        /// Añade un curso a la matricula de un Alumno.
        /// </summary>
        public void AniadeCursoAmatricula(String idCurso)
        {
            MySqlConnection oConexion;
            MySqlCommand oComando;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";

            llamada = "CALL AniadeCursoAmatricula ( '" + this._ID_PK + "','" + idCurso + "' );";
            oComando = new MySqlCommand(llamada, oConexion);

            oConexion.Open();
            oComando.ExecuteReader();

            oConexion.Close();
        }

        /// <summary>
        /// Procedimiento de MATRICULACION.
        /// Añade una asignatura a la matricula de un Alumno.
        /// </summary>
        public void AniadeAsignaturaAmatricula(String idAsignatura)
        {
            MySqlConnection oConexion;
            MySqlCommand oComando;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";

            llamada = "CALL AniadeAsignaturaAmatricula ( '" + this._ID_PK + "','" + idAsignatura + "' );";
            oComando = new MySqlCommand(llamada, oConexion);

            oConexion.Open();
            oComando.ExecuteReader();

            oConexion.Close();
        }

        /// <summary>
        /// Procedimiento de muestra de matricula.
        /// Muestra la matricula de un Alumno.
        /// </summary>
        public void MostrarMatriculaDeAlumno()
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Asignatura oAsignatura;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL MostrarMatriculaDeAlumno ( '" + this._ID_PK + "' );";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {

                //oAsignatura = new Con_Asignatura();
                //oAsignatura.Set_ID_PK();
                //oAsignatura.Set_NOMBRE();

                //dAlumnos.Add(oAlumno.Get_ID_PK(), oAlumno);
                //oAsignatura = null;

            }

            oConexion.Close();
        }

        /// <summary>
        /// Procedimiento de eliminacion de matricula.
        /// Elimina el curso de la matricula de un Alumno.
        /// </summary>
        public void EliminaCursoDeMatricula(String idCurso)
        {
            MySqlConnection oConexion;
            MySqlCommand oComando;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";

            llamada = "CALL EliminaCursoDeMatricula ( '" + this._ID_PK + "','" + idCurso + "' );";
            oComando = new MySqlCommand(llamada, oConexion);

            oConexion.Open();
            oComando.ExecuteReader();

            oConexion.Close();
        }

        /// <summary>
        /// Procedimiento de anotacion de calificaciones.
        /// Apunta la nota para una asignatura de un Alumno.
        /// </summary>
        public void ApuntarNota(String idAsignatura, String Nota)
        {
            MySqlConnection oConexion;
            MySqlCommand oComando;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";

            llamada = "CALL ApuntarNota ( '" + this._ID_PK + "','" + idAsignatura + "','" + Nota + "' );";
            oComando = new MySqlCommand(llamada, oConexion);

            oConexion.Open();
            oComando.ExecuteReader();

            oConexion.Close();
        }

        /// <summary>
        /// Procedimiento para traer un alumno desde el histórico
        /// Activa un antiguo alumno.
        /// </summary>
        public void TraerAlumnoDeHistorico()
        {
            MySqlConnection oConexion;
            MySqlCommand oComando;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";

            llamada = "CALL TraerAlumnoDeHistorico ( '" + this._ID_PK + "' );";
            oComando = new MySqlCommand(llamada, oConexion);

            oConexion.Open();
            oComando.ExecuteReader();

            oConexion.Close();
        }

        /// Getters
        public String Get_ID_PK()
        {
            return this._ID_PK;
        }
        public String Get_NOMBRE()
        {
            return this._NOMBRE;
        }
        public String Get_APELLIDO1()
        {
            return this._APELLIDO1;
        }
        public String Get_APELLIDO2()
        {
            return this._APELLIDO2;
        }
        public String Get_NIF()
        {
            return this._NIF;
        }
        public String Get_DIRECCION()
        {
            return this._DIRECCION;
        }
        public String Get_CP()
        {
            return this._CP;
        }
        public String Get_MAIL()
        {
            return this._MAIL;
        }
        public String Get_OBSERVACIONES()
        {
            return this._OBSERVACIONES;
        }
        public String Get_TLF1()
        {
            return this._TLF1;
        }
        public String Get_TLF2()
        {
            return this._TLF2;
        }
        public String Get_CIUDAD_ID_PK()
        {
            return this._CIUDAD_ID_PK;
        }
        public String Get_PROVINCIA_ID_PK()
        {
            return this._PROVINCIA_ID_PK;
        }
        public String Get_FECHA_CREACION()
        {
            return this._FECHA_CREACION;
        }
        public String Get_ESTADO_ALUMNO_ID_PK()
        {
            return this._ESTADO_ALUMNO_ID_PK;
        }
        public String Get_COMERCIAL_ID_PK()
        {
            return this._COMERCIAL_ID_PK;
        }
        public String Get_NACIONALIDAD_ID_PK()
        {
            return this._NACIONALIDAD_ID_PK;
        }
        public String Get_NUM_MATRICULA()
        {
            return this._NUM_MATRICULA;
        }
        public String Get_ALTA_BOLSA_EMPLEO()
        {
            return this._ALTA_BOLSA_EMPLEO;
        }
        public String Get_NUM_CUENTA()
        {
            return this._NUM_CUENTA;
        }
        public String Get_FECHA_NACIMIENTO()
        {
            return this._FECHA_NACIMIENTO;
        }
        public String Get_NUM_HIJOS()
        {
            return this._NUM_HIJOS;
        }
        public String Get_TRABAJO_ACTUAL()
        {
            return this._TRABAJO_ACTUAL;
        }
        public String Get_HORARIO_TRABAJO()
        {
            return this._HORARIO_TRABAJO;
        }
        public String Get_ESTUDIOS_REALIZADOS()
        {
            return this._ESTUDIOS_REALIZADOS;
        }
        public String Get_INGLES()
        {
            return this._INGLES;
        }
        public String Get_INFORMATICA()
        {
            return this._INFORMATICA;
        }
        public String Get_OTROS_ESTUDIOS()
        {
            return this._OTROS_ESTUDIOS;
        }
        public String Get_OBSERVACIONES_DOCENCIA()
        {
            return this._OBSERVACIONES_DOCENCIA;
        }
        public String Get_ESTADO_CIVIL_ID_PK()
        {
            return this._ESTADO_CIVIL_ID_PK;
        }
        public String Get_TOMADOR_ID_PK()
        {
            return this._TOMADOR_ID_PK;
        }
        public String Get_NOMBRE_EMPRESA()
        {
            return this._NOMBRE_EMPRESA;
        }
        public String Get_CIF_EMPRESA()
        {
            return this._CIF_EMPRESA;
        }

        public String Get_FECHA_FIN()
        {
            return this._FECHA_FIN;
        }

        /// Setters
        public void Set_ID_PK(String parametro)
        {
            this._ID_PK = parametro;
        }
        public void Set_NOMBRE(String parametro)
        {
            this._NOMBRE = parametro;
        }
        public void Set_APELLIDO1(String parametro)
        {
            this._APELLIDO1 = parametro;
        }
        public void Set_APELLIDO2(String parametro)
        {
            this._APELLIDO2 = parametro;
        }
        public void Set_NIF(String parametro)
        {
            this._NIF = parametro;
        }
        public void Set_DIRECCION(String parametro)
        {
            this._DIRECCION = parametro;
        }
        public void Set_CP(String parametro)
        {
            this._CP = parametro;
        }
        public void Set_MAIL(String parametro)
        {
            this._MAIL = parametro;
        }
        public void Set_OBSERVACIONES(String parametro)
        {
            this._OBSERVACIONES = parametro;
        }
        public void Set_TLF1(String parametro)
        {
            this._TLF1 = parametro;
        }
        public void Set_TLF2(String parametro)
        {
            this._TLF2 = parametro;
        }
        public void Set_CIUDAD_ID_PK(String parametro)
        {
            this._CIUDAD_ID_PK = parametro;
        }
        public void Set_PROVINCIA_ID_PK(String parametro)
        {
            this._PROVINCIA_ID_PK = parametro;
        }
        public void Set_FECHA_CREACION(String parametro)
        {
            this._FECHA_CREACION = parametro;
        }
        public void Set_ESTADO_ALUMNO_ID_PK(String parametro)
        {
            this._ESTADO_ALUMNO_ID_PK = parametro;
        }
        public void Set_COMERCIAL_ID_PK(String parametro)
        {
            this._COMERCIAL_ID_PK = parametro;
        }
        public void Set_NACIONALIDAD_ID_PK(String parametro)
        {
            this._NACIONALIDAD_ID_PK = parametro;
        }
        public void Set_NUM_MATRICULA(String parametro)
        {
            this._NUM_MATRICULA = parametro;
        }
        public void Set_ALTA_BOLSA_EMPLEO(String parametro)
        {
            this._ALTA_BOLSA_EMPLEO = parametro;
        }
        public void Set_NUM_CUENTA(String parametro)
        {
            this._NUM_CUENTA = parametro;
        }
        public void Set_FECHA_NACIMIENTO(String parametro)
        {
            this._FECHA_NACIMIENTO = parametro;
        }
        public void Set_NUM_HIJOS(String parametro)
        {
            this._NUM_HIJOS = parametro;
        }
        public void Set_TRABAJO_ACTUAL(String parametro)
        {
            this._TRABAJO_ACTUAL = parametro;
        }
        public void Set_HORARIO_TRABAJO(String parametro)
        {
            this._HORARIO_TRABAJO = parametro;
        }
        public void Set_ESTUDIOS_REALIZADOS(String parametro)
        {
            this._ESTUDIOS_REALIZADOS = parametro;
        }
        public void Set_INGLES(String parametro)
        {
            this._INGLES = parametro;
        }
        public void Set_INFORMATICA(String parametro)
        {
            this._INFORMATICA = parametro;
        }
        public void Set_OTROS_ESTUDIOS(String parametro)
        {
            this._OTROS_ESTUDIOS = parametro;
        }
        public void Set_OBSERVACIONES_DOCENCIA(String parametro)
        {
            this._OBSERVACIONES_DOCENCIA = parametro;
        }
        public void Set_ESTADO_CIVIL_ID_PK(String parametro)
        {
            this._ESTADO_CIVIL_ID_PK = parametro;
        }
        public void Set_TOMADOR_ID_PK(String parametro)
        {
            this._TOMADOR_ID_PK = parametro;
        }

        public void Set_NOMBRE_EMPRESA(String parametro)
        {
            this._NOMBRE_EMPRESA = parametro;
        }

        public void Set_CIF_EMPRESA(String parametro)
        {
            this._CIF_EMPRESA = parametro;
        }

        public void Set_FECHA_FIN(String parametro)
        {
            this._FECHA_FIN = parametro;
        }

        public Con_Asignatura GetAsignatura(String Id)
        {
            return this._dAsignaturas[Id];
        }

        public int cuenta()
        {
            return this._dAsignaturas.Count;
        }
        ///Atributos
        private String _ID_PK;
        private String _NOMBRE;
        private String _APELLIDO1;
        private String _APELLIDO2;
        private String _NIF;
        private String _DIRECCION;
        private String _CP;
        private String _MAIL;
        private String _OBSERVACIONES;
        private String _FECHA_CREACION;
        private String _TLF1;
        private String _TLF2;
        private String _CIUDAD_ID_PK;
        private String _PROVINCIA_ID_PK;
        private String _ESTADO_ALUMNO_ID_PK;
        private String _COMERCIAL_ID_PK;
        private String _NACIONALIDAD_ID_PK;
        private String _NUM_MATRICULA;
        private String _ALTA_BOLSA_EMPLEO;
        private String _NUM_CUENTA;
        private String _FECHA_NACIMIENTO;
        private String _NUM_HIJOS;
        private String _TRABAJO_ACTUAL;
        private String _HORARIO_TRABAJO;
        private String _ESTUDIOS_REALIZADOS;
        private String _INGLES;
        private String _INFORMATICA;
        private String _OTROS_ESTUDIOS;
        private String _OBSERVACIONES_DOCENCIA;
        private String _ESTADO_CIVIL_ID_PK;
        private String _TOMADOR_ID_PK;

        //Atributos especiales para las practicas
        private String _NOMBRE_EMPRESA;
        private String _CIF_EMPRESA;
        private String _FECHA_FIN;

        ///Lista de asignaturas q recibe un alumno
        private Dictionary<String, Con_Asignatura> _dAsignaturas;

    }
}
